package com.zx.zxpicture.application.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zx.zxpicture.domain.space.entity.Space;
import com.zx.zxpicture.domain.user.entity.User;
import com.zx.zxpicture.interfaces.dto.spaceuser.SpaceUserAddRequest;
import com.zx.zxpicture.interfaces.dto.spaceuser.SpaceUserQueryRequest;
import com.zx.zxpicture.domain.space.entity.SpaceUser;
import com.zx.zxpicture.interfaces.vo.vo.SpaceUserVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
* @author ZX
* @description 针对表【space_user(空间用户关联)】的数据库操作Service
* @createDate 2025-03-09 15:01:54
*/
public interface SpaceUserApplicationService extends IService<SpaceUser>{

    /**
     * 校验空间成员
     * @param spaceUser
     * @add 用来标识是添加空间成员还是修改空间成员的角色
     */
    public void validSpaceUser(SpaceUser spaceUser,Boolean add);
    /**
     * 添加空间成员
     * @param spaceUserAddRequest
     * @return
     */
    public long addSpaceUser(SpaceUserAddRequest spaceUserAddRequest);

    /**
     * 构造查询条件
     *
     * @param spaceUserQueryRequest
     * @return
     */
    QueryWrapper<SpaceUser> getQueryWrapper(SpaceUserQueryRequest spaceUserQueryRequest);

    /**
     * 封装返回空间成员对象
     * @param spaceUser
     * @param request
     * @return
     */
    public SpaceUserVO getSpaceUserVO(SpaceUser spaceUser, HttpServletRequest request);

    /**
     * 获取空间成员封装类列表
     * @param spaceUserList
     * @return
     */
    List<SpaceUserVO> getSpaceUserVOList(List<SpaceUser> spaceUserList);

    boolean save(SpaceUser spaceUser);

}
